Processing math: 100%

吴恩达机器学习课程(6)-Logistic Regression

本章节将逻辑回归,组织结构如下:

  • Logistic Regression
    • 6.1 Classification
    • 6.2 Hypothesis Representation
    • 6.3 Decision Boundary
    • 6.4 Cost Function
    • 6.5 Simplified Cost Function and Gradient Descent
    • 6.6 Advanced Optimization
    • 6.7 Multiclass Classification: One-vs-all

6.1 Classification

之前的回归是用来拟合数据 (x,y) 的表达式,这里开始将分类问题,分类中,要预测的变量 y 是离散值。比如给定一封邮件,看是否是垃圾邮件。我们将学习逻辑回归 (Logistic Regression) 算法。

在二分类中,我们将因变量分为两类,我们用 y{0,1} 表示,其中0表示负类,1表示正类。这个的正负没有绝对含义。比如我们

在肿瘤检测中,判断是否恶性肿瘤,可以规定1表示恶性肿瘤,0表示良性肿瘤。

那么能否用线性回归的思路去解决二分类问题呢,比如我们拟合出 hθ(x),然后以0.5位分界去判断分类结果。看上去可以实际上是会出问题的,比如以下这个数据,我们拟合到的是蓝色的直线,这个时候就会有很多点分类错误。

究其原因,是因为在分类当中,分类结果 y 只能是 y{0,1}

6.2 Hypothesis Representation

因此,我们引入一个新的模型,叫做逻辑斯特回归或逻辑回归,这个名字是有点 confusing 的,因为这是一个分类问题。我们想要的是 0hθ(x)1 。线性回归的假设是 hθ(x)=θTx,为了满足输出在 [0,1]中,我们将假设改为:

hθ(x)=g(θTx)

这个 g()是什么呢,我们用的是大名鼎鼎的 sigmoid function(也叫 Logistic function),即:

g(z)=11+ez

这个函数是长这样的:

这个时候我们不妨思考 hθ(x) 干了一件什么事呢,我们可以说,hθ(x) 是对于给定的输入,输出变量等于1的可能性。即:

hθ(x)=P(y=1|x;θ)

再联系上面的 S 型曲线,我们可以认为:

  • hθ(x)0.5 时,预测 y=1
  • hθ(x)<0.5 时,预测 y=0。

如果我们不看 hθ(x),而看 z,因为 z=θTx 也可以说:

  • θTx0,则 y=1
  • θTx<0,则 y=0

6.3 Decision Boundary

假设有这样一个数据和逻辑回归模型:

我们假设学到的参数 θ=[3,1,1],也就是说:3+x1+x20时,预测为正类,即:

中间的这个用于分类的直线就叫做 decision boundary,翻译过来时判定边界,上述的例子是线性的判定边界,我们也可以扩充特征,得到非线性的判定边界,如远行的判定边界。

6.4 Cost Function

上面介绍了逻辑斯特回归的原理,那么我们怎么去拟合 θ 呢,即现在的问题为:

对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们也可以对逻辑回归模型沿用这个定义,但是问题在于将hθ(x)=11+eθTx带入到这样的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convexfunction)。

如果是非凸的,那么在迭代的过程中我们采用梯度下降法,就很难找到全局最小值了。联想线性回归的代价函数为:J(θ)=1mmi=112(hθ(x(i))y(i))2,我们可以将代价函数写成这样的形式:J(θ)=1mmi=1cost(hθ(x(i)),y(i)),在逻辑回归中,Cost为:

Cost(hθ(x),y)={log(hθ(x)) if y=1log(1hθ(x)) if y=0

我们看一下这个 Cost 函数,如果是负类,那么判断正类的概率越大,cost 就越大,如果是正类,当贝判断为正类的概率越低,则 cost 越大。所以这个 cost 还是很符合直觉的。

6.5 Simplified Cost Function and Gradient Descent

那么当前的任务就可以表示为:

我们可以将上述的 Cost 做一个等价的变化,即:

Cost(hθ(x),y)=y×log(hθ(x))(1y)×log(1hθ(x))

带入到代价函数,即:

J(θ)=1mmi=1[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

再结合假设函数,有:

hθ(x(i))=y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))=y(i)log(1+eθTx(i))(1y(i))log(1+eθTx(i))

再看一下求偏导:

θjJ(θ)=θj[1mmi=1[y(i)log(1+eθTx(i))(1y(i))log(1+eθTx(i))]]=1mmi=1[y(i)x(i)jeθTx(i)1+eθTx(i)(1y(i))x(i)jeθTx(i)1+eθTx(i)]=1mmi=1y(i)x(i)j1+eθTx(i)(1y(i))x(i)jeθTx(i)1+eθTx(i)=1mmi=1(y(i)eθTx(i)1+eθTx(i))x(i)j=1mmi=1[hθ(x(i))y(i)]x(i)j

虽然这个梯度下降推导的结果和线性回归看上去一样的,但是实际上是差别很大的。另外,这里也需要进行特征缩放。有了这个梯度的表达式,就可以很容易地去学习了。

6.6 Advanced Optimization

对于一个优化算法, 我们的目标是计算 Cost 的全局最优点。之前都是用的梯度下降法去寻找这个最优点,在数学上还有很多其他的方法:

  • 共轭梯度法
  • BFGS(变尺度法)
  • L-BFGS(限制变尺度法)

如果以后接触,在考虑详细学习。

6.7 Multiclass Classification: One-vs-all

之前讨论的是用逻辑回归解决二分类问题,这里将多分类问题。这个问题在现实中是普遍存在的,比如天气预报,我们可以基本地分为晴天,阴天,雨天。这就是一个四分类问题了。

上图展示了一个二元分类和三元分类的例子。那么我们如何解决多元分类问题呢?我们把这个方法叫做 One-vs-all 方法。

我们可以将一个 n元分类问题转换为 n个二元分类问题,以晴天,阴天,雨天的天气分类来看,我们分为三个二元分类问题:

  • 是不是晴天:将晴天对应的 y 设为1,其他的天气设为0。
  • 是不是阴天:…
  • 是不是雨天:…

然后我们可以用逻辑回归得到是晴天的概率,是阴天的概率,是雨天的概率(不过这个概率和是不为1的)。然后我们选择概率最大的作为输出结果即可。这样我们就用逻辑回归完成了多元分类问题了。

Thanks for rewarding

Related Issues not found

Please contact @forestneo to initialize the comment